package com.dhecp.project.business.service;

import java.util.List;
import java.util.Map;

import com.dhecp.common.core.domain.AjaxResult;
import com.dhecp.project.business.domain.ProductInfo;

/**
 * 产品表  业务层
 * @author lwl
 * @version 2019年11月12日
 */
public interface ProductInfoService {
	
	/**
     * 查询所有产品信息
     * @param params
     * @return List
     * @author lwl
     */ 
	List<ProductInfo> queryProductInfo(Map<String, Object> params) throws Exception;
	
	/**
     * 通过guid查询单条记录
     * @param params
     * @return ProductInfo
     * @author lwl
     */
	ProductInfo queryProductInfoByGuid(String guid);

	/**
	 * 匹配产品信息
	 * @param productInfoItems 必要参数：对应实体类的json格式字符串（包括：matchIid【必要，页面中行号】,gBrand,gID,gModel,gName,gSerial,gUnit）
	 * @return List - ProductInfo
	 * @throws Exception
	 * @author DH-Xxj
	 */
	List<ProductInfo> matchProductInfo(Map<String, Object> params) throws Exception;

	/**
	 * 清理产品导入过渡表中遗留的数据
	 * @param params
	 * @return AjaxResult
	 * @author DH-Xxj
	 */
	AjaxResult cleanProductInfoImport(Map<String, Object> params);

	/**
	 * 将本次导入的产品数据从产品导入过渡表中转入产品信息正式表
	 * @param records 导入总记录数int类型
	 * @return AjaxResult
	 * @author DH-Xxj
	 */
	AjaxResult importToProductInfo(Map<String, Object> params);

	/**
	 * 导入产品信息至产品信息过渡表
	 * @param productInfoItems
	 * @param fSl   面价（含税/未税）计算税率
	 * @param fType 面价（含税/未税）计算类型：（fType == 1：含税面价计算未税面价，fType == 0：未税面价计算含税面价）
	 * @return MessageModel
	 * @author lwl
	 */
//	AjaxResult importProduct(List<ProductInfo> productList,boolean updateSupport);
	AjaxResult importProduct(Map<String, Object> params);

	/**
	 * 新增产品信息
	 * @param productInfoItems
	 * @param fSl   面价（含税/未税）计算税率
	 * @param fType 面价（含税/未税）计算类型：（fType == 1：含税面价计算未税面价，fType == 0：未税面价计算含税面价）
	 * @return
	 * @author lwl
	 */
	AjaxResult insertProduct(Map<String, Object> params);
	
	/**
	 * 修改产品信息
	 * @param productInfoItems
	 * @return
	 * @author lwl
	 */
	AjaxResult updateProduct(Map<String, Object> params);
	
	/**
	 * 通过Guid删除客户信息
	 * @param productInfoItems
	 * @return
	 * @author lwl
	 */
	AjaxResult deleteProductInfoByGuid(Map<String, Object> params);

}
